package com.zb.test;

import com.zb.Interface.MyClassImpl1;
import com.zb.Interface.MyClassImpl2;
import com.zb.Interface.MyInterface2;
import com.zb.Interface.MyInterface3;


public class JAVA8_11_接口中的默认方法和静态方法 {
    public static void main(String[] args) {
        /**
         * 如果一个类继承了父类又实现了接口，父类和接口中拥有同样的默认方法，那么优先获取父类中的方法
         */
        MyClassImpl1 myClassImpl = new MyClassImpl1();
        String str1 = myClassImpl.getValue();
        System.out.println(str1);

        /**
         * 如果一个类实现了多个接口，接口中有同样的默认方法，
         * 1.那么实现类必须指明要调用的接口方法，格式为InterfaceName.super.methodName();
         * 2.或者是重写接口中的方法
         */
        MyClassImpl2 myClassImpl2 = new MyClassImpl2();
        String str2 = myClassImpl2.getValue();
        System.out.println(str2);


        /**
         * 接口中可以声明静态实现方法
         */
        String name = MyInterface3.getName();
        System.out.println(name);

    }
}
